package apps.logica;

import java.util.ArrayList;
import java.util.List;

import javax.ejb.Stateless;
import javax.inject.Inject;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.MapMessage;
import javax.jms.MessageProducer;
import javax.jms.Queue;
import javax.jms.Session;
import javax.naming.Context;
import javax.naming.InitialContext;

import model.Entidad;
import apps.modelo.SolicitudTransferencia;
import apps.negocio.EntidadDao;
import apps.negocio.SolicitudDao;

@Stateless
public class ValidarSolicitud {
	
	@Inject
	SolicitudDao sDao;
	
	@Inject
	EntidadDao eDao;
	
	private List<Entidad> listado;
	ArrayList<SolicitudTransferencia> datos=new ArrayList();
	
	public String validarSolicitudes(SolicitudTransferencia st){
			sDao.insert(st);
			String respuesta="";
			listado=eDao.getEntidades();
			datos=sDao.listarSolicitudes();
			
			for(int i=0;i<listado.size();i++){
				if(listado.get(i).getEntNombre().equalsIgnoreCase(datos.get(i).getEntidadOrigen())){
					//String []destinos=st.getEntidad().split(",");
					respuesta="Datos enviados al destino";
					//for(String destino:destinos)
				//	{	
						enviarMensaje(st.getUsuarioOrigen(),st.getUsuarioDestino(),st.getNumCtaOrigen(),st.getNumCtaDestino(),st.getTipoCta(),st.getMonto(),st.getCedulaOrigen(),st.getCedulaDestino(),st.getUsuarioOrigen(),st.getCedulaOrigen());	
					//}
				}else{
					String respueta="No se encuentra la Entidad";
				}
				return respuesta;
			}
			return null;
		}
	
	
		//Conexion a la Cola de Mensajes
				public void enviarMensaje(String entidadOrigen,String entidadDestino, int numCtaOrigen,int numCtaDestino,String tipoCta, Double monto,String cedulaOrigen, String cedulaDestino, String usuarioOrigen, String usuarioDestino)
				{
					try 
					{ 		//Conectarse a la Cola de mensajes
							Context ic = new InitialContext();
							ConnectionFactory cf = (ConnectionFactory)ic.lookup("java:/ConnectionFactory"); 
							Queue queue = (Queue)ic.lookup("queue/test"); 
							Connection  connection = cf.createConnection(); 
							Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
							MessageProducer publisher = session.createProducer(queue); connection.start();
							//preparar el mensaje
							MapMessage message = session.createMapMessage();			
						    message.setString("entidad", entidadOrigen);
						    message.setString("entidad", entidadDestino);
							message.setString("numCta", numCtaOrigen+"");
							message.setString("numCta", numCtaDestino+"");
						    message.setString("tipoCta", tipoCta);
							message.setString("monto", monto+"");
							message.setString("cedulaOrigen", cedulaOrigen);
							message.setString("cedulaDestino", cedulaDestino);
							message.setString("usuarioOrigen", usuarioOrigen);
							message.setString("usuarioDestino",usuarioDestino);
							
						    //enviar el mensaje
							publisher.send(message);
					 } catch (Exception exc) 
					 { 
						 exc.printStackTrace(); 
					 } 
				} 

	

}
